﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 创建者：王明亮
 * 创建时间：2022/8/27 22:32:58
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Text;
using Aliang.Core.Helper.Attributes;


namespace Aliang.Core.Helper.AttributesValidate
{
    /// <summary>
    /// 扩展类
    /// </summary>
    public static class ValidateEx
    {
        /// <summary>
        /// 实体扩展方法
        /// 验证方法
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <returns></returns>
        public static string Validate<T>(this T model) where T : class
        {
            string msg = null;

            //获取类型
            Type type = model.GetType();

            //反射找到属性值
            var properties = type.GetProperties();
            foreach (var prop in properties)
            {
                //是否将指定类型或其派生类型的一个或多个特性应用于此成员
                if (prop.IsDefined(typeof(BaseAttribute), true))
                {
                    var attributes = prop.GetCustomAttributes(typeof(BaseAttribute), true);//获取自定义的特性
                    foreach (BaseAttribute attr in attributes)
                    {
                        msg += attr.Validate(prop.GetValue(model)) + "\r\n";
                    }
                }
            }
            return msg;
        }
    }

}
